home *** CD-ROM | disk | FTP | other *** search
/ Wonky Flux Batch 2019 02 / Wonky_Flux_Batch_2019-02.zip / Wonky Flux Batch 2019-02 / 023 - Big U Macroworks.dsk / CRT.WRITER.bas < prev    next >
BASIC Source File  |  2019-02-16  |  9KB  |  138 lines

  1. 0  ONERR  GOTO 8000
  2. 5 K1$ = ",D1":K2$ = ",D2"
  3. 10  IF  PEEK(49048) <128  THEN  PRINT "<CTRL-M><CTRL-G>APPLE IIE OR IIC REQUIRED.": END 
  4. 100  TEXT : POKE 49167,0:CRS = 223:H = 0:ODD = 0:P0 = 49249:Q =  -16384:QQ =  -16368:SC = 49237:F0 = 128:BF = 22528:BG = 24576
  5. 102 BP$ =  CHR$(7):D$ =  CHR$(4):CR$(1) = "1":CR$(2) = "2"
  6. 104 CX = 25072:QUIT = 25285: DEF  FN MEM(H) = H - INT(H/2) *2: DEF  FN LO(H) = H - INT(H/256) *256: DEF  FN HI(H) =  INT(H/256)
  7. 106 MGO = 24832:MRET = 24868:MCTR = 24904:AC = 64
  8. 108 LD = 25298:SV = 25311:RE = 20366:CP = 20223:DUMP = 25328
  9. 110 A$ = "|--------+---------+---------+---------|---------+---------+---------+---------|"
  10. 112  PRINT  CHR$(4)"PR#3": HOME : PRINT 
  11. 114  PRINT  CHR$(4)"-CRT.CODE"
  12. 116  DIM V%(24): FOR V = 1 TO 24: VTAB V:V%(V) =  PEEK(40) + PEEK(41) *256: NEXT :V = 2:MF = 0
  13. 118  CALL CX: VTAB 16: HTAB 27: PRINT "PRESS THE SPACE BAR TO START":K9 = 1:GF = 1: GOTO 4000
  14. 120 K9 = 0: WAIT Q,F0: POKE QQ,0: POKE 34,1: POKE 35,23: HOME : TEXT : GOTO 140
  15. 122  REM <CTRL-J><CTRL-J>GET A CHARACTER<CTRL-J>
  16. 140  CALL 54915: ONERR  GOTO 8000
  17. 145  POKE SC -ODD,0:PZ = V%(V) +H/2:C =  PEEK(PZ):C2 = C:XC = CR -VF -(F0 +AC) *INV: IF C2 = XC  THEN C2 = 160
  18. 150  POKE SC -ODD,0: POKE PZ,XC: FOR I = 1 TO 50: IF  PEEK(Q) <F0  THEN  NEXT : POKE PZ,C2: FOR I = 1 TO 50: IF  PEEK(Q) <F0  THEN  NEXT 
  19. 160 K =  PEEK(Q): ON K < = F0 GOTO 150: POKE QQ,0: POKE PZ,C: ON  PEEK(P0) > = F0 GOTO 500
  20. 165 DLT = 0:EF = 0: IF K <160  AND K < >144  THEN 205
  21. 170  IF K = 144  THEN  CALL DUMP: GOTO 140
  22. 175  IF (V = 1  OR V = 24)  AND GF = 0  THEN 140
  23. 185  POKE SC -ODD,0:UN = 0:X = K -(F0 +AC) *INV: IF X <0  THEN X = X +64
  24. 195  POKE PZ,X:H = H +(  NOT VF):V = V +VF:ODD =  FN MEM(H): GOTO 280
  25. 205  REM 
  26. 215  IF K = 136  OR K = 149  THEN ODD = ODD = 0:H = H -(K = 136) +(K = 149)
  27. 225 V = V +(K = 138) -(K = 139)
  28. 235  IF K = 137  THEN H = 10 * INT((H +11 *( PEEK(P0) <F0))/10) -1:H = H *(H > = 0):H = H -(H -79) *(H >79):ODD =  FN MEM(H)
  29. 245  IF K = 141  THEN V = V +1:H = 0:ODD = 0
  30. 260  IF H <0  THEN H = 79:V = V -1:ODD = 1
  31. 280  IF H >79  THEN H = 0:V = V +1
  32. 300  IF V >24  THEN V = 1
  33. 320  IF V <1  THEN V = 24
  34. 340  GOTO 140
  35. 499  REM <CTRL-J><CTRL-J>APPLE-COMMANDS<CTRL-J>
  36. 500 K = K -32 *(K >223):VO = V:HO = H:OO = ODD: ON K = 138  OR K = 139 GOTO 7000: ON K = 212 GOTO 4000: ON K = 195  OR K = 204  OR K = 210  OR K = 136  OR K = 149 GOTO 3000: ON K = 205  OR K = 196 GOTO 1000: ON K = 201 GOTO 2000: IF K = 208  THEN  CALL DUMP: GOTO 140
  37. 510  IF K >175  AND K <186  THEN H = H -H *(K = 176):K = K -177 +(K = 176):V = 1 +23 *(K/8):ODD =  FN MEM(H): GOTO 140
  38. 525  ON K = 193 GOTO 2500: ON K = 203 GOTO 6800: ON K = 209 GOTO 600: ON K = 213 GOTO 5000: ON K = 223 GOTO 2200
  39. 527  IF K = 216  THEN  CALL CPY: CALL CX: WAIT Q,F0: POKE QQ,0: CALL RE: GOTO 140
  40. 530  IF K = 214  THEN VF = VF = 0: GOTO 140
  41. 540  ON K = 199 GOTO 6000: ON K = 211 GOTO 6500: REM  GET & SAVE SCREENS
  42. 550 DLT = 0: GOTO 165
  43. 600  CALL QUIT: CALL RE: IF  PEEK(592) < >217  AND  PEEK(592) < >249  THEN 140
  44. 610  GOSUB 7500: VTAB 23: END 
  45. 999  REM <CTRL-J><CTRL-J>MOVE<CTRL-J>
  46. 1000  GOSUB 7500: CALL CP:UN = 1
  47. 1020  NORMAL :INV = 0:COPY = (K = 196):MF = 1: FOR I = 1 TO 3:V(I) = V:H(I) = H:P(I) = PZ:O(I) = ODD:C(I) = C: NEXT :CRS$(3) =  CHR$(13 -9 *(COPY)): POKE SC -ODD,0: POKE P(1),49:MF = MF +1
  48. 1040  POKE SC -O(MF),0:P(MF) = V%(V) +H/2:C(MF) =  PEEK(P(MF)): POKE P(MF), ASC(CRS$(MF))
  49. 1050  FOR I = 1 TO MF -1: POKE SC -O(I),0: POKE P(I),C(I): NEXT : FOR I = 1 TO MF -1: POKE SC -O(I),0: POKE P(I), ASC(CRS$(I)):J =  PEEK(49200): NEXT 
  50. 1060 K =  PEEK(Q): ON K < = F0 GOTO 1050: POKE QQ,0
  51. 1070  IF K = 155  THEN MF = 0: FOR I = 3 TO 1  STEP  -1: POKE SC -O(I),0: POKE P(I),C(I): NEXT : NORMAL :V = VO:H = HO:ODD = OO: GOTO 140
  52. 1073  IF K < >141  THEN 1080
  53. 1075 V(MF) = V:H(MF) = H:MF = MF +1:V(MF) = V:H(MF) = H:O(MF) = O(MF -1)
  54. 1076  IF MF = 3  AND V(1) <V(3)  THEN V(3) = V(1)
  55. 1077  IF MF = 3  AND H(1) <H  THEN H(3) = H(1):O(3) = O(1)
  56. 1078 V = V(MF):H = H(MF)
  57. 1079  POKE SC -O(MF),0: ON MF <4 GOTO 1040: GOTO 1500
  58. 1080  POKE SC -O(MF),0: POKE P(MF),C(MF)
  59. 1085  IF K = 137  THEN H = 10 * INT((H +11 *( PEEK(P0) <F0))/10) -1:H = H *(H > = 0):H = H -(H -79) *(H >79):O(MF) =  FN MEM(H)
  60. 1088  IF K >175  AND K <186  THEN H = H -H *(K = 176):K = K -177 +(K = 176):V = 1 +23 *(K/8):O(MF) =  FN MEM(H)
  61. 1090  IF K = 136  OR K = 149  THEN O(MF) = O(MF) = 0:H = H -(K = 136) +(K = 149)
  62. 1200 V = V +(K = 138) -(K = 139)
  63. 1260  IF H <0  THEN H = 79:V = V -1:O(MF) = 1
  64. 1280  IF H >79  AND MF <3  THEN H = 0:V = V +1
  65. 1285  IF MF = 3  THEN I = 79 - ABS(H(1) -H(2)): IF H >I  THEN  PRINT BP$;:H = I:O(MF) =  FN MEM(I)
  66. 1300  IF V >24  AND MF <3  THEN V = 1
  67. 1310  IF MF = 3  THEN I = 24 - ABS(V(1) -V(2)): IF V >I  THEN  PRINT BP$;:V = I
  68. 1320  IF V <1  THEN V = 24
  69. 1340  VTAB 1: PRINT : GOTO 1040
  70. 1500  TEXT : IF V(1) >V(2)  THEN I = V(1):V(1) = V(2):V(2) = I
  71. 1502  IF H(1) >H(2)  THEN I = H(1):H(1) = H(2):H(2) = I
  72. 1503 MF = 0: FOR I = 3 TO 1  STEP  -1: POKE SC -O(I),0: POKE P(I),C(I): NEXT 
  73. 1505  FOR V = V(1) TO V(2): VTAB V:H = H(1):L = H(2) -H +1:A =  PEEK(40) + PEEK(41) *256 + INT(H/2): POKE 60, FN LO(A): POKE 61, FN HI(A): POKE 62,L: POKE 63, FN MEM(H)
  74. 1510 BB = BF +L *(V -V(1)) -L:B1 =  FN LO(BB):B2 =  FN HI(BB): POKE MG +14,B1: POKE MG +15,B2: POKE MG +27,B1: POKE MG +28,B2: CALL MGO: NEXT 
  75. 1520  IF   NOT COPY  THEN  TEXT : IF V(2) <24  OR H(1) +L <80  THEN  FOR I = V(1) TO V(2): VTAB 1: PRINT : VTAB I: POKE 1403,H(1): PRINT  SPC( L): NEXT : GOTO 1550
  76. 1525  IF   NOT COPY  THEN  FOR I = V(1) TO V(2): VTAB 1: PRINT : VTAB I: POKE 1403,H(1): PRINT  SPC( L -(I = 24)): NEXT : POKE 2039,160: GOTO 1550
  77. 1550  FOR V = V(3) TO V(3) +(V(2) -V(1)): VTAB V:H = H(3):A =  PEEK(40) + PEEK(41) *256 + INT(H/2): POKE 60, FN LO(A): POKE 61, FN HI(A): POKE 62,L: POKE 63, FN MEM(H)
  78. 1560 BB = BF +L *(V -V(3)) -L:B1 =  FN LO(BB):B2 =  FN HI(BB): POKE MR +12,B1: POKE MR +13,B2: POKE MR +25,B1: POKE MR +26,B2: CALL MRET: NEXT 
  79. 1580 V = VO:H = HO:ODD = OO: GOTO 140
  80. 1600  POKE 60, FN LO(A): POKE 61, FN HI(A): POKE 62,L: POKE 63, FN MEM(HH): RETURN 
  81. 1650 B1 =  FN LO(BB):B2 =  FN HI(BB): POKE MGO +14,B1: POKE MGO +15,B2: POKE MGO +27,B1: POKE MGO +28,B2: RETURN 
  82. 1660 B1 =  FN LO(BB):B2 =  FN HI(BB): POKE MGO +48,B1: POKE MGO +49,B2: POKE MGO +61,B1: POKE MGO +62,B2: RETURN 
  83. 1999  REM  <CTRL-J><CTRL-J>INVERSE<CTRL-J>
  84. 2000  IF  PEEK(50) = 63  THEN INV = 0:AC = 64: NORMAL : GOTO 140
  85. 2010  IF  PEEK(50) = 255  THEN INV = 1:AC = 64: INVERSE : GOTO 140
  86. 2100  REM <CTRL-J><CTRL-J>DELETE<CTRL-J>
  87. 2200  IF DL = 0  THEN  GOSUB 7500: CALL CP:UN = 1
  88. 2250  TEXT : VTAB V -(V -1) *(DLT = 3): POKE 1403,H -H *(DLT >0): NORMAL : CALL  -868 -90 *(DLT >1): POKE 50,255 -192 *INV:DLT = DLT +1: GOTO 140
  89. 2499  REM   <CTRL-J><CTRL-J>MOUSE TEXT<CTRL-J>
  90. 2500 AC = 64 -AC: IF AC = 0  THEN  INVERSE :INV = 1: GOTO 140
  91. 2510 INV = 0: NORMAL : GOTO 140
  92. 2999  REM <CTRL-J><CTRL-J>CENTER/LEFT/RIGHT<CTRL-J>
  93. 3000  GOSUB 7500
  94. 3020  TEXT : VTAB V:AA =  PEEK(40) + PEEK(41) *256: CALL MCTR:LL =  PEEK(62):RR =  PEEK(63): IF LL >RR  THEN 140
  95. 3040 BB = BF: GOSUB 1650: GOSUB 1660: TEXT :A = AA + INT(LL/2):L = RR -LL +1:HH = LL: GOSUB 1600: CALL MGO: TEXT : VTAB 1: PRINT : VTAB V: IF K >149  THEN  NORMAL : CALL  -868: POKE 50,255 -192 *INV
  96. 3041  IF K = 195  THEN HH = (80 -L)/2:A = AA + INT(HH/2): GOSUB 1600: CALL MRET
  97. 3043  IF K = 204  THEN HH = 0:A = AA: GOSUB 1600: CALL MRET
  98. 3045  IF K = 210  THEN HH = 80 -L:A = AA + INT(HH/2): GOSUB 1600: CALL MRET
  99. 3050  IF K = 136  THEN H = LL:ODD =  FN MEM(H)
  100. 3055  IF L <80  AND K = 149  THEN H = RR:ODD =  FN MEM(H)
  101. 3500  GOTO 140
  102. 3999  REM <CTRL-J><CTRL-J>TAB RULER<CTRL-J>
  103. 4000 GF = GF = 0: TEXT : IF GF = 0  THEN 4100
  104. 4050 BB = BG:A = 1024: GOSUB 1660: GOSUB 1600: CALL MRET:BB = BG +80: GOSUB 1660:A = 2000: GOSUB 1600: CALL MRET: GOTO 4120
  105. 4100 BB = BG: GOSUB 1650:A = 1024:L = 80:HH = 0: GOSUB 1600: CALL MGO:BB = BG +80: GOSUB 1650:A = 2000: GOSUB 1600: CALL MGO
  106. 4110  TEXT : VTAB 1: PRINT : VTAB 1: POKE 1403,0:: PRINT A$: VTAB 24: PRINT  LEFT$(A$,79);: POKE 2039,252
  107. 4120  IF K9 = 2  THEN  RETURN 
  108. 4125  ON K9 +1 GOTO 140,120
  109. 4990  REM <CTRL-J><CTRL-J>UNDO LAST MOVE, COPY OR DELETE<CTRL-J>
  110. 5000  IF UNDO = 1  THEN UNDO = 0: CALL RE:DL = 0
  111. 5010  GOTO 140
  112. 5999  REM <CTRL-J>LOAD A SCREEN<CTRL-J>
  113. 6000  GOSUB 7500
  114. 6005  CALL LD:N$ = "":X = 592
  115. 6010  IF  PEEK(X) < >0  THEN N$ = N$ + CHR$( PEEK(X)):X = X +1: GOTO 6010
  116. 6020  IF N$ < >""  THEN  PRINT D$"-"N$: GOTO 140
  117. 6030  CALL RE: GOTO 140
  118. 6400  REM  <CTRL-J>SAVE A SCREEN<CTRL-J>
  119. 6500  GOSUB 7500
  120. 6505  CALL SV:N$ = "":X = 592
  121. 6510  IF  PEEK(X) < >0  THEN N$ = N$ + CHR$( PEEK(X)):X = X +1: GOTO 6510
  122. 6520  IF N$ < >""  THEN  PRINT D$"BSAVE"N$",A$4F8B,E$577F"
  123. 6530  CALL RE: GOTO 140
  124. 6700  REM <CTRL-J>CATALOG DISK<CTRL-J>
  125. 6800 C2$ = "CATALOG" +K1$: IF  PEEK(P0 +1) > = F0  THEN C2$ = "CATALOG" +K2$
  126. 6805  CALL CPY: TEXT : PRINT D$;C2$
  127. 6810  PRINT "PRESS A KEY": WAIT Q,F0: POKE QQ,0: CALL RE: GOTO 140
  128. 6999  REM <CTRL-J><CTRL-J>SCREEN UP/DOWN<CTRL-J>
  129. 7000  IF  PEEK(P0 +1) <F0  OR GF = 0  THEN 225
  130. 7005  IF UN = 0  THEN UN = 1: CALL CP
  131. 7010  TEXT : PRINT  CHR$(K +12);: GOTO 140
  132. 7500  IF GF = 0  THEN K9 = 2: GOSUB 4000:K9 = 0
  133. 7510  RETURN : REM <CTRL-J><CTRL-J>
  134. 8000 ER =  PEEK(222):EL =  PEEK(218) + PEEK(219) *256
  135. 8010  IF EL = 6805  AND ER = 255  THEN 6810
  136. 8020  IF EL = 114  THEN  PRINT "<CTRL-G><CTRL-M>CAN'T FIND CRT.CODE": END : GOTO 114
  137. 8100  IF EL = 6020  OR EL = 6520  OR EL = 6805  THEN  VTAB 11: PRINT BP$: HTAB 2: INVERSE : PRINT " DISK-RELATED ERROR; PRESS A KEY ";: NORMAL : GET X$: CALL RE: GOTO 140
  138. 9000  POKE 216,0: RESUME